<?php

class MovimientosvaldesController extends AppController
{

    public $helpers = array(
        'Html',
        'Form',
        'Session',
        'Js');
    public $uses = array('Movimientosvalde', 'Valde', 'Sucursale');
    public $layout = 'imprenta';

    function beforeFilter()
    {
        //$this->checksession();
        //$this->permisosusuarios();
        $this->Auth->allow();
    }

    function index()
    {
        $this->paginate = array('Movimientosvalde' => array('limit' => 30));
        $this->set('movimientosvaldes', $this->paginate('Movimientosvalde'));
        $movimi = $this->Movimientosvalde->find('all');

        $listadovaldes = $this->Movimientosvalde->find('all', array('recursive' => -1));
        $this->set(compact('listadovaldes'));
    }

    function insertar()
    {
        if (!empty($this->data))
        {
            //debug($this->request->data);die;
            $idValde = $this->request->data['Movimientosvaldes']['producto_id'];

            /* $ultimovalde = $this->Movimientosvalde->find('first', array(
              'recursive' => -1,
              'order' => 'Movimientosvalde.id DESC',
              'conditions' => array('Movimientosvalde.valde_id' => $idv))); */
            $ultimoMovimientoValde = $this->_getultimoregistroproducto($idValde);
            
            $prestado = $this->request->data['Movimientosvaldes']['cantidad'];
            if(!empty($prestado)){
                $prestado = 'S';
            }else{
                $prestado = 'N';
            }
            if (empty($ultimoMovimientoValde))
            {                
                $cantidad = $this->request->data['Movimientosvaldes']['cantidad'];
                $this->request->data['Movimientosvalde']['ingreso'] = $cantidad;
                $this->request->data['Movimientosvalde']['cantidad'] = $cantidad;
                $this->request->data['Movimientosvalde']['valde_id'] = $idValde;
                $this->request->data['Movimientosvalde']['sucursale_id'] = 6;
                $this->request->data['Movimientosvalde']['estado'] = "N";
                $this->request->data['Movimientosvalde']['prestado'] = $prestado;
                $this->request->data['Movimientosvalde']['quienpresto'] = $this->request->data['Movimientosvaldes']['quienpresto'];

                $this->Movimientosvalde->create();
                if ($this->Movimientosvalde->save($this->data))
                {
                    $this->Session->setFlash('Movimientosvalde registrado con exito');
                    //$this->redirect(array('action' => 'index'), null, true);
                    $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                } else
                {
                    $this->Session->setFlash('No se pudo registrar al Movimientosvalde');
                    //$this->redirect(array('action' => 'index'), null, true);
                    $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                }
            } else
            {
                $ultimaCantidad = $ultimoMovimientoValde['Movimientosvalde']['cantidad'];
                $this->request->data['Movimientosvalde']['ingreso'] = $this->request->data['Movimientosvaldes']['cantidad'];
                $cantidad = $this->request->data['Movimientosvaldes']['cantidad'] + $ultimaCantidad;
                $this->request->data['Movimientosvalde']['cantidad'] = $cantidad;
                $this->request->data['Movimientosvalde']['valde_id'] = $idValde;
                $this->request->data['Movimientosvalde']['sucursale_id'] = 6;
                $this->request->data['Movimientosvalde']['estado'] = "N";
                $this->request->data['Movimientosvalde']['prestado'] = $prestado;
                $this->request->data['Movimientosvalde']['quienpresto'] = $this->request->data['Movimientosvaldes']['quienpresto'];

                $this->Movimientosvalde->create();
                if ($this->Movimientosvalde->save($this->data))
                {
                    $this->Session->setFlash('Movimientosvalde registrado con exito');
                    //$this->redirect(array('action' => 'index'), null, true);
                    $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                } else
                {
                    $this->Session->setFlash('No se pudo registrar al Movimientosvalde');
                    // $this->redirect(array('action' => 'index'), null, true);
                    $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                }
            }
        } else
        {
            $this->redirect(array('action' => 'index'), null, true);
        }
    }

    function salida()
    {
        $valdes = $this->Valde->find('all');
        $movimi = $this->Movimientosvalde->find('all');
        //$idvalde = $this->request->data['Movimientosvalde']['valde_id'];
        //$ultimacantidad = $this->Movimientosvalde->find('first',array('recursive'=>-1,'order'=>'Movimientosvalde.id DESC','conditions'=>array('Movimientosvalde.cantidad'=>$idvalde)));
        if (!empty($this->data))
        {

            foreach ($valdes as $va)
            {
                $id = $va['Valde']['id'];


                $idv = $this->request->data['Movimientosvaldes']['producto_id'];


                if ($idv == $id)
                {

                    $ultimovalde = $this->Movimientosvalde->find('first', array(
                        'recursive' => -1,
                        'order' => 'Movimientosvalde.id DESC',
                        'conditions' => array('Movimientosvalde.valde_id' => $idv)));

                    if (empty($ultimovalde))
                    {
                        $this->Session->setFlash('No hay en almacen');
                        $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                    } else
                    {
                        $ultimacantidad = $ultimovalde['Movimientosvalde']['cantidad'];
                        $this->request->data['Movimientosvalde']['salidas'] = $this->request->data['Movimientosvaldes']['cantidad'];
                        if ($ultimacantidad < $this->request->data['Movimientosvaldes']['cantidad'])
                        {
                            $this->Session->setFlash('No hay en almacen');
                            $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                        } else
                        {
                            $cantidad = $ultimacantidad - $this->request->data['Movimientosvaldes']['cantidad'];
                            $this->request->data['Movimientosvalde']['cantidad'] = $cantidad;
                            $pesototal = ($cantidad * $va['Valde']['peso']);
                            $this->request->data['Movimientosvalde']['pesototal'] = $pesototal;
                            $this->request->data['Movimientosvalde']['valde_id'] = $idv;

                            $this->Movimientosvalde->create();
                            if ($this->Movimientosvalde->save($this->data))
                            {
                                $this->Session->setFlash('Movimientosvalde registrado con exito');
                                //$this->redirect(array('action' => 'index'), null, true);
                                $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                            } else
                            {
                                $this->Session->setFlash('No se pudo registrar al Movimientosvalde');
                                // $this->redirect(array('action' => 'index'), null, true);
                                $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
                            }
                        }
                    }
                }
            }
        } else
        {
            $this->redirect(array('action' => 'index'), null, true);
        }
    }

    function editar($id = null)
    {
        $this->Movimientosvalde->id = $id;
        if (!$id)
        {
            $this->Session->setFlash('No existe tal registro');
            $this->redirect(array('action' => 'index'), null, true);
        }
        if (empty($this->data))
        {
            $this->data = $this->Movimientosvalde->read(); //find(array('id' => $id));
        } else
        {

            if ($this->Movimientosvalde->save($this->data))
            {
                $this->Session->setFlash('Los datos fueron modificados');
                $this->redirect(array('action' => 'index'), null, true);
            } else
            {
                $this->Session->setFlash('no se pudo modificar!!');
            }
        }
        $opt = array('1' => 'Alta', '0' => 'Baja');

        $this->set(compact('opt'));
        $dvald = $this->Valde->find('list', array('fields' => 'Valde.nombre'));
        $this->set(compact('dvald'));
    }

    function eliminar($id = null)
    {
        if (!$id)
        {
            $this->Session->setFlash('id Invalida para reclamo');
            $this->redirect(array('action' => 'index'), null, true);
        }
        if ($this->Movimientosvalde->delete($id))
        {
            $this->Session->setFlash('El Movimientosvalde  ' . $id . ' fue borrado');
            $this->redirect(array('action' => 'index'), null, true);
        }
    }

    function imprime()
    {
        $this->layout = 'ajax';
    }

    protected function _getultimoregistroproducto($idProducto = null)
    {
        $ultimoProducto = $this->Movimientosvalde->find('first', array(
            'recursive' => -1,
            'order' => 'Movimientosvalde.id DESC',
            'conditions' => array('Movimientosvalde.valde_id' => $idProducto)));
        return $ultimoProducto;
    }

    protected function _getultimoregistroproductosucursal($idProducto = null, $idSucursal = null)
    {
        $ultimoProducto = $this->Movimientosvalde->find('first', array(
            'recursive' => -1,
            'order' => 'Movimientosvalde.id DESC',
            'conditions' => array(
                'Movimientosvalde.valde_id' => $idProducto,
                'Movimientosvalde.sucursale_id' => $idSucursal
        )));
        return $ultimoProducto;
    }

    public function verdetalle($idValde = null)
    {
        $sucursalUsuario = $this->Session->read('Auth.User.sucursale_id');

        $dcs = $this->Sucursale->find('list', array(
            'fields' => array('id', 'nombre')
        ));

        $rol = $this->Session->read('Auth.User.role');

        if ($rol == 'admin')
        {
            $detalleValdes = $this->Movimientosvalde->find('all', array(
                'recursive' => 0,
                'conditions' => array(
                    'Movimientosvalde.valde_id' => $idValde,
                    'NOT'=>array(
                        'Movimientosvalde.estado' => array('V', 'A')
                    )                    
                )
            ));
        } else
        {
            $detalleValdes = $this->Movimientosvalde->find('all', array(
                'recursive' => 0,
                'conditions' => array(
                    'Movimientosvalde.valde_id' => $idValde,
                    'Movimientosvalde.estado <>' => 'N',
                    'Movimientosvalde.sucursale_id' => $sucursalUsuario
                )
            ));
        }

        $datosValde = $this->Valde->find('first', array(
            'recursive' => -1,
            'conditions' => array('Valde.id' => $idValde)
        ));

        $cantidadValdes = $this->_getultimoregistroproducto($idValde);

        $cantidadValdesSucursal = $this->Movimientosvalde->find('count', array(
            'conditions' => array('Movimientosvalde.sucursale_id' => $sucursalUsuario)
        ));

        $this->set(compact('detalleValdes', 'datosValde', 'cantidadValdes', 'dcs', 'cantidadValdesSucursal'));
    }

    public function registrarsalidas()
    {
//        debug($this->request->data);
//        die;
        $datosMovimientosValdes = $this->request->data['Movimientosvaldes'];
        $idValde = $this->request->data['Movimientosvaldes']['0']['valde_id'];
        $datosValde = $this->Valde->find('first', array(
            'recursive' => -1,
            'conditions' => array('Valde.id' => $idValde)
        ));
        $pesoValde = $datosValde['Valde']['peso'];
        $ultimoMovimiento = $this->_getultimoregistroproducto($idValde);
        //debug($ultimoMovimiento);
        $ultimaCantidad = $ultimoMovimiento['Movimientosvalde']['cantidad'];
        $ultimaCantidadTemporal = 0;
        foreach ($datosMovimientosValdes as $dmv)
        {
            //debug($dmt);
            $this->request->data['Movimientosvalde']['valde_id'] = $idValde;
            $this->request->data['Movimientosvalde']['sucursale_id'] = $dmv['sucursale_id'];
            $this->request->data['Movimientosvalde']['codigo'] = $dmv['codigo'];
            $this->request->data['Movimientosvalde']['ingreso'] = 0;
            $this->request->data['Movimientosvalde']['salida'] = 1;
            $this->request->data['Movimientosvalde']['peso'] = $pesoValde;

            if ($ultimaCantidadTemporal == 0)
            {
                $this->request->data['Movimientosvalde']['cantidad'] = $ultimaCantidad - 1;
            } else
            {
                $this->request->data['Movimientosvalde']['cantidad'] = $ultimaCantidadTemporal - 1;
            }
            $this->request->data['Movimientosvalde']['estado'] = 'S';
            $this->request->data['Movimientosvalde']['cliente'] = $dmv['cliente'];
            $this->request->data['Movimientosvalde']['precio_venta'] = $dmv['precio'];
            $this->Movimientosvalde->create();
            if ($this->Movimientosvalde->save($this->request->data['Movimientosvalde']))
            {
                $ultimoIdTemporal = $this->Movimientosvalde->getLastInsertID();
                //debug($ultimoIdTemporal);
                $ultimosDatosTemporal = $this->Movimientosvalde->find('first', array('recursive' => -1, 'conditions' => array('Movimientosvalde.id' => $ultimoIdTemporal)));
                $ultimaCantidadTemporal = $ultimosDatosTemporal['Movimientosvalde']['cantidad'];
                if ($ultimaCantidadTemporal == 0)
                {
                    $this->Session->setFlash('No puede sacar mas Productos');
                    $this->redirect(array('action' => 'Movimientosvaldes', 'action' => 'verdetalle', $idValde));
                }
                //debug($ultimosDatosTemporal);
            }
            //debug($this->request->data['Movimientosvalde']);
        }
        $this->redirect(array(
            'controller' => 'Movimientosvaldes',
            'action' => 'verdetalle',
            $idValde));
    }

    public function regulariza()
    {
        //debug($this->request->data);
        //die;
        $codigoProducto = $this->request->data['Movimientosvaldes']['codigo'];
        $idProducto = $this->request->data['Movimientosvaldes']['producto_id'];
        $pesoProducto = $this->request->data['Movimientosvaldes']['peso'];
        $ultimoMovimiento = $this->_getultimoregistroproducto($idProducto);
        $ultimaCantidad = $ultimoMovimiento['Movimientosvalde']['cantidad'];
        //debug($ultimaCantidad);
        //debug($ultimoMovimiento);die;
        $this->request->data['Movimientosvalde']['valde_id'] = $idProducto;
        $this->request->data['Movimientosvalde']['sucursale_id'] = 6;
        $this->request->data['Movimientosvalde']['codigo'] = $codigoProducto;
        $this->request->data['Movimientosvalde']['ingreso'] = 1;
        $this->request->data['Movimientosvalde']['salida'] = 0;
        $this->request->data['Movimientosvalde']['peso'] = $pesoProducto;
        $this->request->data['Movimientosvalde']['cantidad'] = $ultimaCantidad + 1;
        $this->request->data['Movimientosvalde']['estado'] = 'R';
        //$this->request->data['Movimientosvalde']['cliente'] = $dmv['cliente'];
        //$this->request->data['Movimientosvalde']['precio_venta'] = $dmv['precio'];
        $this->Movimientosvalde->create();
        if ($this->Movimientosvalde->save($this->request->data['Movimientosvalde']))
        {
            $this->redirect(array('controller' => 'Valdes', 'action' => 'index'));
        }
    }

    public function registrarventas()
    {
        //debug($this->request->data);die;        
        $datosMovimientosValdes = $this->request->data['Movimientosvaldes'];
        $idValde = $this->request->data['Movimientosvaldes']['0']['valde_id'];
        $pesoValde = $this->Valde->find('first', array(
            'recursive' => -1,
            'conditions' => array('Valde.id' => $idValde)
        ));
        $ultimoMovimiento = $this->_getultimoregistroproducto($idValde);
        //$pesoValde = $ultimoMovimiento[''];
        //debug($ultimoMovimiento);die;
        $ultimaCantidad = $ultimoMovimiento['Movimientosvalde']['cantidad'];
        $ultimaCantidadTemporal = 0;
        foreach ($datosMovimientosValdes as $dmv)
        {
            //debug($dmt);
            $this->request->data['Movimientosvalde']['valde_id'] = $dmv['valde_id'];
            $this->request->data['Movimientosvalde']['sucursale_id'] = 6;
            $this->request->data['Movimientosvalde']['codigo'] = $dmv['codigo'];
            $this->request->data['Movimientosvalde']['ingreso'] = 0;
            $this->request->data['Movimientosvalde']['peso'] = $pesoValde['Valde']['peso'];
            $this->request->data['Movimientosvalde']['salida'] = 1;

            if ($ultimaCantidadTemporal == 0)
            {
                $this->request->data['Movimientosvalde']['cantidad'] = $ultimaCantidad - 1;
            } else
            {
                $this->request->data['Movimientosvalde']['cantidad'] = $ultimaCantidadTemporal - 1;
            }
            $this->request->data['Movimientosvalde']['estado'] = 'V';
            $this->request->data['Movimientosvalde']['cliente'] = $dmv['cliente'];
            $this->request->data['Movimientosvalde']['precio_venta'] = $dmv['precio'];
            //debug($this->request->data['Movimientosvalde']);die;
            $this->Movimientosvalde->create();
            if ($this->Movimientosvalde->save($this->request->data['Movimientosvalde']))
            {
                $ultimoIdTemporal = $this->Movimientosvalde->getLastInsertID();
                //debug($ultimoIdTemporal);
                $ultimosDatosTemporal = $this->Movimientosvalde->find('first', array('recursive' => -1, 'conditions' => array('Movimientosvalde.id' => $ultimoIdTemporal)));
                $ultimaCantidadTemporal = $ultimosDatosTemporal['Movimientosvalde']['cantidad'];
                if ($ultimaCantidadTemporal == 0)
                {
                    $this->Session->setFlash("No puede vender insumos que no Tiene");
                    $this->redirect(array('controller' => 'Movimientosvaldes', 'action' => 'verdetalle', $idValde));
                }
                //debug($ultimosDatosTemporal);
            }
            //debug($this->request->data['Movimientosvalde']);
        }
        $this->redirect(array(
            'controller' => 'Movimientosvaldes',
            'action' => 'verdetalle',
            $idValde));
    }

    public function sacarliquido()
    {
        //debug($this->request->data);die;
        $idMovimientoValde = $this->request->data['Movimientosvaldes']['valde_id'];
        $sucursal = $this->request->data['Movimientosvaldes']['sucursale_id'];

        $datosValde = $this->Movimientosvalde->find('first', array(
            'recursive' => -1,
            'conditions' => array('Movimientosvalde.id' => $idMovimientoValde)
        ));
        //debug($datosValde);die;
        $data = array('id' => $idMovimientoValde, 'sucursale_id' => $sucursal);
        if ($this->Movimientosvalde->save($data))
        {
            $this->Session->setFlash('Producto enviado Correctamente');
            $this->redirect(array('controller' => 'Movimientosvaldes', 'action' => 'verdetalle', $datosValde['Movimientosvalde']['valde_id']));
        }
    }

}

?>